package fejezet20;

import java.awt.*;
import java.awt.event.*;
import java.util.Arrays;
import java.util.Collections;
import javax.swing.*;

public class KockaDobás5 extends JApplet
    implements ActionListener {
  private JComboBox cbDobásDb=new JComboBox(
    new String[] {"100", "1000", "10000"});             //1
  private JButton btDobás=new JButton("Dobás");
  private JPanel pnGrafikon=new JPanel();

  @Override
  public void init() {
    setLayout(new BorderLayout());
    JPanel pnEszköztár=new JPanel();
    pnEszköztár.add(cbDobásDb);
    pnEszköztár.add(
      new JLabel("db kockadobás 2 dobókockával"));
    btDobás.addActionListener(this);
    pnEszköztár.add(btDobás);
    add(pnEszköztár, BorderLayout.NORTH);
    add(pnGrafikon, BorderLayout.CENTER);
  }

  public void actionPerformed(ActionEvent e) {
    int dobásDb=Integer.parseInt(
      (String)cbDobásDb.getSelectedItem());
    Integer[] dobásTömb=dob(dobásDb);
    felületFrissít(dobásTömb);
  }

  private Integer[] dob(int dobásDb) {
    Integer[] dobásTömb=new Integer[13];
    for(int i=0; i<=12; i++)
      dobásTömb[i]=0;
    int dobás1, dobás2;
    for(int i=1; i<=dobásDb; i++) {
      dobás1=(int)(Math.random()*6+1);
      dobás2=(int)(Math.random()*6+1);
      dobásTömb[dobás1+dobás2]++;
    }
    return dobásTömb;
  }

  private void felületFrissít(Integer[] dobásTömb) {
    Graphics g=pnGrafikon.getGraphics().create(
      0, 0, pnGrafikon.getWidth(), pnGrafikon.getHeight());
    g.setColor(Color.WHITE);
    g.fillRect(0, 0, g.getClipBounds().width,
      g.getClipBounds().height);
    int oszlopSzélesség=g.getClipBounds().width/11,
      maxOszlopMagasság=g.getClipBounds().height-30;
    int maxDobásDb=
      Collections.max(Arrays.asList(dobásTömb));
    double arány=(double)maxDobásDb/maxOszlopMagasság;
    for(int i=2; i<=12; i++) {
      int oszlopMagasság=(int)(dobásTömb[i]/arány);
      g.setColor(Color.BLUE);
      g.fillRect((i-2)*oszlopSzélesség,
                 maxOszlopMagasság-oszlopMagasság,
                 oszlopSzélesség,
                 maxOszlopMagasság-
                   (maxOszlopMagasság-oszlopMagasság));
      g.setColor(Color.BLACK);
      g.drawString(extra.Format.right(i, 4),
         (i-2)*oszlopSzélesség, maxOszlopMagasság+12);
      g.drawString(extra.Format.right(dobásTömb[i], 4),
         (i-2)*oszlopSzélesség, maxOszlopMagasság+24);
    }
  }
}